#pragma once

#include <vector>
#include <memory>

#include "../Neuron/FastICANeuron.h"

using namespace std;

class CFastICA
{
public:
	friend class CFastICALearn;

public:
	CFastICA() = delete;

	CFastICA(int dimension, CFastICANeuron::ACTIVE_FUNCTION_TYPE activeType);

public:
	Vector2 Execute(const Vector2 & Input);

protected:
	int m_Dimension;

	vector< shared_ptr<CFastICANeuron> > m_Neurons;
};